package org.jeecg.modules.simulator;

import lombok.Getter;
import org.jeecg.modules.simulator.model.OffTrainNumRange;

import java.util.HashMap;
import java.util.Random;
import java.util.Map;

/**
 * @program: simulator-b20240918
 * @description:
 * @author: renzhg
 * @create: 2024-10-10 17:10
 **/
public class OffTrainNumRangeGerner {

    @Getter
    private Map<String, OffTrainNumRange> offTrainNumRangeMap = new HashMap<>();

    // 生成随机下车人数
    public void generateRandomOffTrainNumbers() {
        Random random = new Random();
        int totalSeconds = 86400; // 24小时的总秒数

        for (int second = 0; second < totalSeconds; second++) {
            // 假设下车人数的区间随着时间变化
            // 这里可以根据实际需求调整 min 和 max 的值
            int min = Math.max(0, 100 - (second / 864)); // 逐渐减少的最小值
            int max = Math.max(0, 400 - (second / 432)); // 逐渐减少的最大值
            int parameter = (min + max) / 2; // 计算参数值为区间的中间值

            // 生成随机数，确保在 min 和 max 之间
            int randomOffTrainNum = random.nextInt(max - min + 1) + min;
            String s = convertSecondsToTime(second);
            // 创建 OffTrainNumRange 对象
            OffTrainNumRange range = new OffTrainNumRange(min, max, randomOffTrainNum);
            offTrainNumRangeMap.put(s, range);
        }
    }

    // 打印每秒下车人数的范围
//    public void printOffTrainNumbers() {
//        for (Map.Entry<Integer, OffTrainNumRange> entry : offTrainNumRangeMap.entrySet()) {
//            int second = entry.getKey();
//            OffTrainNumRange range = entry.getValue();
//            System.out.printf("第 %d 秒: 下车人数范围 [%d, %d], 参数值: %d%n",
//                    second, range.getMin(), range.getMax(), range.getParameter());
//        }
//    }

    private  String convertSecondsToTime(int seconds) {
        int hours = seconds / 3600; // 计算小时
        int minutes = (seconds % 3600) / 60; // 计算分钟
        int secs = seconds % 60; // 计算剩余秒数

        // 格式化为"hh:mm:ss"
        return String.format("%02d:%02d:%02d", hours, minutes, secs);
    }
}
